#ifndef _RECTANGLE_H
#define _RECTANGLE_H

class Shape
{
   public:
      virtual ~Shape();

      virtual double calcArea() const = 0;
      virtual double calcPerimeter() const = 0;
};

class Rectangle : public Shape
{
   const static double max_length = 100;
   const static double max_width = 75;
   const static double min_length = 0;
   const static double min_width = 0;
   
   public: 
      Rectangle(double length, double width);
      virtual ~Rectangle();


      virtual double calcArea() const;
      virtual double calcPerimeter() const;

    private:
      double  length_m;
      double  width_m;
};

class Square : public Shape
{
   const static double max_line = 75;
   const static double min_line = 0;
   
   public:
      Square(double line);
      virtual ~Square();

      virtual double calcArea() const;
      virtual double calcPerimeter() const;

    private:
      double  line_m;
};

#endif

